package br.ufc.persis.controller;

import java.util.List;
import java.util.Scanner;

import br.ufc.persis.dao.DepartamentoDAO;
import br.ufc.persis.dao.impl.DepartamentoJPADAO;
import br.ufc.persis.model.Departamento;
import br.ufc.persis.view.ViewDepartamento;

public class DepartamentoController {
	
	private static Scanner sc = new Scanner(System.in);
	
	public static void processar(int opc){
	
		if(opc == ViewDepartamento.NOVO){
			cadastrarDepartamento();
		}else if(opc == ViewDepartamento.LISTAR){
			listarDepartamentos();
		}else if(opc == ViewDepartamento.EXCLUIR){
			apagarDepartamento();
		}else if(opc == ViewDepartamento.BUSCAR_DEPARTAMENTO){
			
		}
	
	}
	
	public static Departamento findDepartamentoByCodigo(){
		System.out.println("Digite o cédigo do departamento: ");
		long id = Long.parseLong(sc.nextLine());
		DepartamentoDAO dao = new DepartamentoJPADAO();
		Departamento dept = dao.find(id);
		return dept;
	}
	
	private static void cadastrarDepartamento(){
		DepartamentoDAO dao = new DepartamentoJPADAO();
		System.out.print("Digite o nome do departamento: \n");
		String nome = sc.nextLine();
		
		Departamento dept = new Departamento();
		dept.setNome(nome);
		dao.beginTransaction();
		dao.save(dept);
		dao.commit();
		dao.close();
	}

	public static void listarDepartamentos(){
		DepartamentoDAO dao = new DepartamentoJPADAO();
		List<Departamento> departamentos = dao.find();
		for (Departamento departamento : departamentos) {
			System.out.println(departamento);
			System.out.println("----------");
		}
	}
	
	public static void apagarDepartamento(){
		DepartamentoDAO dao = new DepartamentoJPADAO();
		System.out.println("Digite o cédigo do departamento: ");
		long id = Long.parseLong(sc.nextLine());
		dao.beginTransaction();
		Departamento departamento = dao.find(id);
		System.out.println("Deseja realmente excluir o departamento "+departamento.getNome()+" ?(1 - sim/2 - não)");
		int opc = Integer.parseInt(sc.nextLine());
		if(opc == 1){
			dao.beginTransaction();
			dao.delete(departamento);
			dao.commit();
			dao.close();
		}else{
			return;
		}
	}
}
